ClickHouce 常用数据类型转换函数

您所在的位置:网站首页 sql 转换数据类型 ClickHouce 常用数据类型转换函数

ClickHouce 常用数据类型转换函数

2023-09-12 14:20| 来源: 网络整理| 查看: 265

目录

1、toInt(8|16|32|64)

2、toFloat(|32|64)

3、toDecimal(32|64|128)

4、toString

5、parseDateTimeBestEffort

6、CAST(x, T)

1、toInt(8|16|32|64)

说明:转换一个输入值为Int类型。 这个函数包括: toInt8(expr)   — 结果为Int8数据类型。 toInt16(expr) — 结果为Int16数据类型。 toInt32(expr) — 结果为Int32数据类型。 toInt64(expr) — 结果为Int64数据类型。

参数 :expr — 表达式返回一个数字或者代表数值类型的字符串。

不支持二进制、八进制、十六进制的数字形式,有效数字之前的0也会被忽略。

返回值:整形在Int8, Int16, Int32,或者 Int64 的数据类型。

函数使用rounding towards zero原则,这意味着会截断丢弃小数部分的数值。

注:NaN and Inf转换是不确定的。

例子:

select toInt64(nan), toInt64(Inf),toInt32(32), toInt16('16'), toInt8(8.8);

扩展:

☛ toInt(8|16|32|64)OrZero :需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回0。 ☛ toInt(8|16|32|64)OrNull :需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回NULL。

 

2、toFloat(|32|64)

说明:转换一个输入值为Float类型。 这个函数包括: toFloat32(expr) — 结果为Float32数据类型。 toFloat64(expr) — 结果为Float64数据类型。

例子:

select toFloat32('89.12'),toFloat64('98.0912');

扩展: ☛ toFloat(32|64)OrZero :需要一个字符类型的入参,然后尝试把它转为Float (32 | 64),如果转换失败直接返回0。 ☛ toFloat(32|64)OrNull  :需要一个字符类型的入参,然后尝试把它转为Float ( 32 | 64),如果转换失败直接返回NULL。

 

 

3、toDecimal(32|64|128)

说明:转换 value 到Decimal类型的值,其中精度为S。value可以是一个数字或者一个字符串。S 指定小数位的精度。 这个函数包括: toDecimal32(value, S) toDecimal64(value, S) toDecimal128(value, S)

例子:

select toDecimal32('89.12',2),toDecimal64('98.0912',5),toDecimal128('98.0912',6);

扩展:

☛ toDecimal(32|64|128)OrNull:转换一个输入的字符到 Nullable(Decimal(P,S))类型的数据。 如果在解析输入值发生错误的时候你希望得到一个NULL值而不是抛出异常,可以使用该函数。 ☛ toDecimal(32|64|128)OrZero:转换输入值为Decimal(P,S)类型数据。 当解析错误的时候,你不需要抛出异常而希望得到0值,可以使用该函数。

 

 

4、toString

说明:函数用于在数字、字符串(不包含FixedString)、Date以及DateTime之间互相转换。

select now(),toString(today()),toString(now());

 

5、parseDateTimeBestEffort

说明:把String类型的时间日期转换为DateTime数据类型。

语法: parseDateTimeBestEffort(time_string [, time_zone]);

参数 : time_string — 字符类型的时间和日期。 time_zone — 字符类型的时区。     非标准格式的支持 ☛ 9位或者10位的数字时间,unix timestamp. ☛ 时间和日期组成的字符串: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss等。 ☛ 日期的字符串: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY 等。 ☛ 只有天和时间: DD, DD hh, DD hh:mm。这种情况下 YYYY-MM 默认为 2000-01。 ☛ 包含时间日期以及时区信息: YYYY-MM-DD hh:mm:ss ±h:mm等。例如: 2021-12-12 17:36:00 -5:00。

返回值:DateTime类型数据。

例子:

select  parseDateTimeBestEffort('12 20:19')            as data_0 ,parseDateTimeBestEffort('8912211011')          as data_1 ,parseDateTimeBestEffort('12/13/2021 12:12:21') as data_2 ,parseDateTimeBestEffort('20211212 11:12:12') as data_3 ,parseDateTimeBestEffort('Sat, 12 Aug 2021 11:22:22 GMT', 'Europe/Moscow') as data_4

扩展:

☛ parseDateTimeBestEffortOrNull 函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为NULL。

☛ parseDateTimeBestEffortOrZero 函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为0。

 

6、CAST(x, T)

说明:将’x’转换为’t’数据类型。还支持语法CAST(x as t)

例子:

select '2021-12-21 21:12:13' as timestamp ,CAST(timestamp as DateTime) as datetime ,CAST(timestamp as Date) as date ,CAST(timestamp, 'String') as string ,CAST(timestamp, 'FixedString(22)') as fixed_string;

注:将参数转换为FixedString(N),仅适用于String或FixedString(N)类型的参数。

 

参考:https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3